package pl.icn.hurtownia;

import java.math.BigDecimal;

import pl.icn.hurtownia.dao.AdresDAO;
import pl.icn.hurtownia.dao.ProduktDAO;
import pl.icn.hurtownia.encje.Adres;
import pl.icn.hurtownia.encje.Produkt;
import pl.icn.hurtownia.utils.HibernateUtil;

public class Hurtownia {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		System.out.println(" Hurtownia ruszyła !!!");
		HibernateUtil.getSessionFactory();
		
		
		
		HibernateUtil.shutdown();
		System.out.println(" Hurtownia zakończyła pracę !!!");
		
	}
	
	public static void testProduktu() {
		
		Long produktID = null;
		
		// Utworzenie nowego produktu i zapamiętanie jego identyfikatora
		produktID = ProduktDAO.nowyProdukt("001", "Testowy produkt", new BigDecimal(2000), 23);
		
		System.out.println(" Utworzono produkt o identyfikatorze: " + produktID);
		
		// Odczyt produktu o danym identyfikatorze
		Produkt produkt = ProduktDAO.daneProduktu(produktID);
		
		System.out.println(" Odczytano dane produktu o nazwie: " + produkt.getNazwa());
		
		// Edycja ceny produktu o danym identyfikatorze
		ProduktDAO.edycjaProduktu(produktID, null, null, new BigDecimal(3000), null);
		
		// Ponowny odczyt produktu po zmianie ceny
		produkt = ProduktDAO.daneProduktu(produktID);
		
		System.out.println(" Nowa cena wynosi: " + produkt.getCena());
		
		// Usunięcie produktu o danym identyfikatorze
		ProduktDAO.usuniecieProduktu(produktID);
		
		//Próba odczytania usuniętego produktu
		produkt = ProduktDAO.daneProduktu(produktID);
		
		System.out.println(" Próba odczytania usuniętego produktu: " + produkt);
		
	}
	
	public static void testAdresu() {
		
		Long adresID = null;
		
		// Utworzenie nowego adresu i zapamiętanie jego identyfikatora
		adresID = AdresDAO.nowyAdres("2", "12", "Słowackiego", "54-321", "Wrocław");
		
		System.out.println(" Utworzono adres o identyfikatorze: " + adresID);
		
		// Odczyt adresu o danym identyfikatorze
		Adres adres = AdresDAO.daneAdresu(adresID);
		
		System.out.println(" Odczytano dane adresu z ulicy: " + adres.getUlica());
		
		// Edycja numeru lokalu adresu o danym identyfikatorze
		AdresDAO.edycjaAdresu(adresID, null, "222", null, null, null);
		
		// Ponowny odczyt adresu po zmianie numeru lokalu
		adres = AdresDAO.daneAdresu(adresID);
		
		System.out.println(" Nowy numer lokalu to: " + adres.getNrLokalu());
		
		// Usunięcie adresu o danym identyfikatorze
		AdresDAO.usuniecieAdresu(adresID);
		
		//Próba odczytania usuniętego adresu
		adres = AdresDAO.daneAdresu(adresID);
		
		System.out.println(" Próba odczytania usuniętego adresu: " + adres);
		
	}

}
